home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 22 / CU Amiga Magazine's Super CD-ROM 22 (1998)(EMAP Images)(GB)[!][issue 1998-05].iso / PowerPC / Programming / PPCSmallEiffel / bin_c / compile_to_c21.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-01-16  |  38.4 KB  |  1,493 lines

  1. /*
  2. -- ANSI C code generated by :
  3. -- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
  4. -- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
  5. -- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
  6. --                 http://www.loria.fr/SmallEiffel              --
  7. */
  8. #include "compile_to_c.h"
  9. int r958id(T958* C){
  10. int R=0;
  11. R=(((T355*)((T355*)(r958run_class(C)))))->_id/*4*/;
  12. return R;
  13. }
  14. int r958has_creation(T958* C,T0* a1){
  15. int R=0;
  16. R=X291has_creation((((T958*)C))->_run_type/*8*/,a1);
  17. return R;
  18. }
  19. /*No:TYPE_LIKE_CURRENT.is_anchored*/
  20. int r958is_array(T958* C){
  21. int R=0;
  22. R=X291is_array((((T958*)C))->_run_type/*8*/);
  23. return R;
  24. }
  25. int r958is_a(T958* C,T0* a1){
  26. int R=0;
  27. R=X291is_a((((T958*)C))->_run_type/*8*/,a1);
  28. return R;
  29. }
  30. void r958c_initialize_in(T958* C,T0* a1){
  31. X291c_initialize_in((((T958*)C))->_run_type/*8*/,a1);
  32. }
  33. void r958c_type_for_argument_in(T958* C,T0* a1){
  34. X291c_type_for_argument_in((((T958*)C))->_run_type/*8*/,a1);
  35. }
  36. void r958gc_call_new_in(T958* C,T0* a1){
  37. r7append(((T7*)a1),((T0*)ms115_470));
  38. r2append_in(r958id(C),a1);
  39. r7extend(((T7*)a1),'\50');
  40. r7extend(((T7*)a1),'\51');
  41. }
  42. int r958is_pointer(T958* C){
  43. int R=0;
  44. R=X291is_pointer((((T958*)C))->_run_type/*8*/);
  45. return R;
  46. }
  47. /*No:TYPE_LIKE_CURRENT.run_type*/
  48. int r958is_dummy_expanded(T958* C){
  49. int R=0;
  50. R=X291is_dummy_expanded((((T958*)C))->_run_type/*8*/);
  51. return R;
  52. }
  53. int r958is_string(T958* C){
  54. int R=0;
  55. R=X291is_string((((T958*)C))->_run_type/*8*/);
  56. return R;
  57. }
  58. int r958space_for_variable(T958* C){
  59. int R=0;
  60. R=X291space_for_variable((((T958*)C))->_run_type/*8*/);
  61. return R;
  62. }
  63. /*No:TYPE_LIKE_CURRENT.is_like_feature*/
  64. /*No:TYPE_LIKE_CURRENT.is_like_current*/
  65. void r958make(T958* C,T0* a1,T0* a2){
  66. C->_start_position=a1;
  67. C->_like_what=a2;
  68. if(NULL!=(C->_like_what))switch(((T0*)C->_like_what)->id) {
  69. case 358: case 716: 
  70. break;
  71. default:
  72. C->_like_what=NULL;
  73. };}
  74. /*No:TYPE_LIKE_CURRENT.us_like_current*/
  75. void r958mapping_cast(T958* C){
  76. /*[IRF3.3clear*/((((T7*)(((T7*)(oBC291tmp_string)))))->_count)=(0);
  77. /*]*/
  78. r7extend(((T7*)(oBC291tmp_string)),'\50');
  79. r958c_type_for_target_in(C,oBC291tmp_string);
  80. r7extend(((T7*)(oBC291tmp_string)),'\51');
  81. /*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),oBC291tmp_string);
  82. /*]*/
  83. }
  84. /*No:TYPE_LIKE_CURRENT.start_position*/
  85. void r958c_type_for_target_in(T958* C,T0* a1){
  86. X291c_type_for_target_in((((T958*)C))->_run_type/*8*/,a1);
  87. }
  88. /*No:TYPE_LIKE_CURRENT.fz_gc_mark*/
  89. /*No:TYPE_LIKE_CURRENT.like_what*/
  90. void r958gc_initialize(T958* C){
  91. X291gc_initialize((((T958*)C))->_run_type/*8*/);
  92. }
  93. int r958is_character(T958* C){
  94. int R=0;
  95. R=X291is_character((((T958*)C))->_run_type/*8*/);
  96. return R;
  97. }
  98. int r958is_user_expanded(T958* C){
  99. int R=0;
  100. R=X291is_user_expanded((((T958*)C))->_run_type/*8*/);
  101. return R;
  102. }
  103. T0* r958written_mark(void){
  104. T0* R=NULL;
  105. R=((T0*)ms145_473);
  106. return R;
  107. }
  108. /*No:TYPE_LIKE_CURRENT.is_run_type*/
  109. T0* r958to_runnable(T958* C,T0* a1){
  110. T0* R=NULL;
  111. /*IF*/if (((((T958*)C))->_run_type/*8*/)==((void*)(NULL))) {
  112. C->_run_type=X291run_type(a1);
  113. R=(T0*)C;
  114. }
  115. else {
  116. {T958*n=malloc(sizeof(*n));
  117. *n=M958;
  118. r958make(n,(((T958*)C))->_start_position/*4*/,(((T958*)C))->_like_what/*12*/);
  119. R=(T0*)n;
  120. }
  121. R=r958to_runnable(((T958*)R),a1);
  122. }
  123. /*FI*/return R;
  124. }
  125. void r958c_type_for_external_in(T958* C,T0* a1){
  126. /*IF*/if (r958is_reference(C)) {
  127. r7append(((T7*)a1),((T0*)ms133_470));
  128. r7extend(((T7*)a1),'\52');
  129. }
  130. else {
  131. r958c_type_for_result_in(C,a1);
  132. }
  133. /*FI*/}
  134. T0* r958generic_list(T958* C){
  135. T0* R=NULL;
  136. /*IF*/if (r958is_generic(C)) {
  137. R=X291generic_list((((T958*)C))->_run_type/*8*/);
  138. }
  139. else {
  140. r958fatal_error_generic_list(C);
  141. }
  142. /*FI*/return R;
  143. }
  144. /*No:TYPE_LIKE_CURRENT.is_formal_generic*/
  145. void r958demangling_in(T958* C,T0* a1){
  146. /*IF*/if (r958is_reference(C)) {
  147. r7extend(((T7*)a1),'R');
  148. }
  149. else {
  150. r7extend(((T7*)a1),'E');
  151. }
  152. /*FI*/r7extend(((T7*)a1),'\40');
  153. r7append(((T7*)a1),r958run_time_mark(C));
  154. }
  155. int r958is_real(T958* C){
  156. int R=0;
  157. R=X291is_real((((T958*)C))->_run_type/*8*/);
  158. return R;
  159. }
  160. int r958is_bit(T958* C){
  161. int R=0;
  162. R=X291is_bit((((T958*)C))->_run_type/*8*/);
  163. return R;
  164. }
  165. void r958fatal_error_generic_list(T958* C){
  166. r683add_type((T0*)C,((T0*)ms12_291));
  167. r683print_as_fatal_error(((T683*)(oBC364eh)));
  168. }
  169. /*No:TYPE_LIKE_CURRENT.fz_new*/
  170. T0*oBC291tmp_string=NULL;
  171. T0* r958smallest_ancestor(T958* C,T0* a1){
  172. T0* R=NULL;
  173. R=X291smallest_ancestor((((T958*)C))->_run_type/*8*/,a1);
  174. return R;
  175. }
  176. int r958is_boolean(T958* C){
  177. int R=0;
  178. R=X291is_boolean((((T958*)C))->_run_type/*8*/);
  179. return R;
  180. }
  181. int r958is_double(T958* C){
  182. int R=0;
  183. R=X291is_double((((T958*)C))->_run_type/*8*/);
  184. return R;
  185. }
  186. T0* r958run_class(T958* C){
  187. T0* R=NULL;
  188. R=r604run_class((((T958*)C))->_run_type/*8*/);
  189. return R;
  190. }
  191. T0* r958run_time_mark(T958* C){
  192. T0* R=NULL;
  193. /*IF*/if (((((T958*)C))->_run_type/*8*/)!=((void*)(NULL))) {
  194. R=X291run_time_mark((((T958*)C))->_run_type/*8*/);
  195. }
  196. /*FI*/return R;
  197. }
  198. void r958c_initialize(T958* C){
  199. X291c_initialize((((T958*)C))->_run_type/*8*/);
  200. }
  201. void r958cast_to_ref(T958* C){
  202. X291cast_to_ref((((T958*)C))->_run_type/*8*/);
  203. }
  204. void r958gc_mark_in(T958* C,T0* a1){
  205. r7append(((T7*)a1),((T0*)ms107_470));
  206. r2append_in(r958id(C),a1);
  207. }
  208. int r958is_a_in(T958* C,T0* a1,T0* a2){
  209. int R=0;
  210. T0* _ct=NULL;
  211. T0* _t2=NULL;
  212. T0* _t1=NULL;
  213. /*IF*/if ((r958written_mark())==((void*)(X291written_mark(a1)))) {
  214. R=1;
  215. }
  216. else {
  217. _ct=(((T355*)((T355*)a2)))->_current_type/*0*/;
  218. _t1=r958to_runnable(C,_ct);
  219. _t2=X291to_runnable(a1,_ct);
  220. /*IF*/if ((X291run_time_mark(_t1))==((void*)(X291run_time_mark(_t2)))) {
  221. R=1;
  222. }
  223. else {
  224. R=X291is_a(_t1,_t2);
  225. }
  226. /*FI*/}
  227. /*FI*/return R;
  228. }
  229. T0* r958look_up_for(T958* C,T0* a1,T0* a2){
  230. T0* R=NULL;
  231. R=r605look_up_for(((T605*)(r958base_class(C))),a1,a2);
  232. return R;
  233. }
  234. void r958c_header_pass1(T958* C){
  235. X291c_header_pass1((((T958*)C))->_run_type/*8*/);
  236. }
  237. void r958c_type_for_result_in(T958* C,T0* a1){
  238. X291c_type_for_result_in((((T958*)C))->_run_type/*8*/,a1);
  239. }
  240. T0* r958expanded_initializer(T958* C){
  241. T0* R=NULL;
  242. R=X291expanded_initializer((((T958*)C))->_run_type/*8*/);
  243. return R;
  244. }
  245. /*No:TYPE_LIKE_CURRENT.fz_void*/
  246. /*No:TYPE_LIKE_CURRENT.fz_dot*/
  247. int r958is_generic(T958* C){
  248. int R=0;
  249. R=X291is_generic((((T958*)C))->_run_type/*8*/);
  250. return R;
  251. }
  252. /*No:TYPE_LIKE_CURRENT.used_as_reference*/
  253. void r958c_header_pass2(T958* C){
  254. X291c_header_pass2((((T958*)C))->_run_type/*8*/);
  255. }
  256. void r958gc_define1(T958* C){
  257. X291gc_define1((((T958*)C))->_run_type/*8*/);
  258. }
  259. int r958need_c_struct(T958* C){
  260. int R=0;
  261. R=X291need_c_struct((((T958*)C))->_run_type/*8*/);
  262. return R;
  263. }
  264. int r958is_reference(T958* C){
  265. int R=0;
  266. R=X291is_reference((((T958*)C))->_run_type/*8*/);
  267. return R;
  268. }
  269. void r958gc_info_in(T958* C,T0* a1){
  270. X291gc_info_in((((T958*)C))->_run_type/*8*/,a1);
  271. }
  272. T0* r958base_class(T958* C){
  273. T0* R=NULL;
  274. T0* _bcn=NULL;
  275. _bcn=r958base_class_name(C);
  276. /*IF*/if ((_bcn)!=((void*)(NULL))) {
  277. R=r451base_class(((T451*)_bcn));
  278. }
  279. else {
  280. /*[IRF3.6append*/{T0* b1=((T0*)ms3_291);
  281. r7append(((T7*)(oBC683explanation)),b1);
  282. }/*]*/
  283. r683add_type((T0*)C,((T0*)ms67_470));
  284. r683print_as_fatal_error(((T683*)(oBC364eh)));
  285. }
  286. /*FI*/return R;
  287. }
  288. void r958call_gc_sweep_in(T958* C,T0* a1){
  289. X291call_gc_sweep_in((((T958*)C))->_run_type/*8*/,a1);
  290. }
  291. void r958gc_define2(T958* C){
  292. X291gc_define2((((T958*)C))->_run_type/*8*/);
  293. }
  294. int r958need_gc_mark_function(T958* C){
  295. int R=0;
  296. R=X291need_gc_mark_function((((T958*)C))->_run_type/*8*/);
  297. return R;
  298. }
  299. int r958is_any(T958* C){
  300. int R=0;
  301. R=X291is_any((((T958*)C))->_run_type/*8*/);
  302. return R;
  303. }
  304. void r958to_reference(T958* C){
  305. X291to_reference((((T958*)C))->_run_type/*8*/);
  306. }
  307. void r958c_header_pass3(T958* C){
  308. X291c_header_pass3((((T958*)C))->_run_type/*8*/);
  309. }
  310. T0* r958base_class_name(T958* C){
  311. T0* R=NULL;
  312. R=X291base_class_name((((T958*)C))->_run_type/*8*/);
  313. return R;
  314. }
  315. int r958is_expanded(T958* C){
  316. int R=0;
  317. R=X291is_expanded((((T958*)C))->_run_type/*8*/);
  318. return R;
  319. }
  320. int r958is_basic_eiffel_expanded(T958* C){
  321. int R=0;
  322. R=X291is_basic_eiffel_expanded((((T958*)C))->_run_type/*8*/);
  323. return R;
  324. }
  325. int r958is_none(T958* C){
  326. int R=0;
  327. R=X291is_none((((T958*)C))->_run_type/*8*/);
  328. return R;
  329. }
  330. void r958to_expanded(T958* C){
  331. X291to_expanded((((T958*)C))->_run_type/*8*/);
  332. }
  333. int r958is_integer(T958* C){
  334. int R=0;
  335. R=X291is_integer((((T958*)C))->_run_type/*8*/);
  336. return R;
  337. }
  338. void r958c_header_pass4(T958* C){
  339. X291c_header_pass4((((T958*)C))->_run_type/*8*/);
  340. }
  341. void r306print_count(T306* C,T0* a1,int a2){
  342. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  343. /*IF*/if ((a2)>(0)) {
  344. r306put_string(C,((T0*)ms6_306));
  345. r306put_string(C,a1);
  346. /*IF*/if ((a2)>(1)) {
  347. r306put_character(C,'s');
  348. }
  349. /*FI*/r306put_string(C,((T0*)ms7_306));
  350. r306put_integer(C,a2);
  351. r306put_string(C,((T0*)ms241_470));
  352. }
  353. else {
  354. r306put_string(C,((T0*)ms8_306));
  355. r306put_string(C,a1);
  356. r306put_string(C,((T0*)ms241_470));
  357. }
  358. /*FI*/}
  359. /*FI*/}
  360. /*No:ECHO.make*/
  361. /*No:ECHO.verbose*/
  362. void r306file_removing(T306* C,T0* a1){
  363. /*IF*/if (r306file_exists(a1)) {
  364. r306put_string(C,((T0*)ms1_306));
  365. r306put_string(C,a1);
  366. r306put_string(C,((T0*)ms2_306));
  367. /*[IRF3.6remove_file*/{T0* b1=a1;
  368. /*[IRF3.6delete*/{T0* c1=b1;
  369. remove(((char*)r7to_external(((T7*)c1))));
  370. }/*]*/
  371. }/*]*/
  372. }
  373. /*FI*/}
  374. /*No:ECHO.remove_file*/
  375. void r306sfr_connect(T306* C,T0* a1,T0* a2){
  376. r306put_string(C,((T0*)ms3_306));
  377. r306put_string(C,a2);
  378. r306put_string(C,((T0*)ms4_306));
  379. r675connect_to(((T675*)a1),a2);
  380. }
  381. void r306put_double_format(T306* C,double a1,int a2){
  382. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  383. r830put_double_format(((T830*)(oBC1std_output)),a1,a2);
  384. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  385. fflush(stdout);
  386. }/*]*/
  387. }
  388. /*FI*/}
  389. void r306put_string(T306* C,T0* a1){
  390. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  391. r830put_string(((T830*)(oBC1std_output)),a1);
  392. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  393. fflush(stdout);
  394. }/*]*/
  395. }
  396. /*FI*/}
  397. void r306put_integer(T306* C,int a1){
  398. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  399. r830put_integer(((T830*)(oBC1std_output)),a1);
  400. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  401. fflush(stdout);
  402. }/*]*/
  403. }
  404. /*FI*/}
  405. void r306w_put_string(T0* a1){
  406. r441put_string(((T441*)(oBC1std_error)),a1);
  407. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  408. fflush(stderr);
  409. }/*]*/
  410. }
  411. int r306file_exists(T0* a1){
  412. int R=0;
  413. R=r670is_readable(a1);
  414. return R;
  415. }
  416. void r306put_character(T306* C,char a1){
  417. /*IF*/if ((((T306*)C))->_verbose/*0*/) {
  418. /*[IRF3.6put_character*/{T830* C1=((T830*)(oBC1std_output));
  419. char b1=a1;
  420. putc(b1,((FILE*)(stdout)));
  421. }/*]*/
  422. /*[IRF3.6flush*/{T830* C1=((T830*)(oBC1std_output));
  423. fflush(stdout);
  424. }/*]*/
  425. }
  426. /*FI*/}
  427. /*No:ECHO.fz_b6*/
  428. void r306w_put_character(char a1){
  429. /*[IRF3.6put_character*/{T441* C1=((T441*)(oBC1std_error));
  430. char b1=a1;
  431. putc(b1,((FILE*)(stderr)));
  432. }/*]*/
  433. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  434. fflush(stderr);
  435. }/*]*/
  436. }
  437. /*No:ECHO.set_verbose*/
  438. void r306w_put_integer(int a1){
  439. r441put_integer(((T441*)(oBC1std_error)),a1);
  440. /*[IRF3.6flush*/{T441* C1=((T441*)(oBC1std_error));
  441. fflush(stderr);
  442. }/*]*/
  443. }
  444. T0* r355at(T355* C,T0* a1){
  445. T0* R=NULL;
  446. T0* _to_key=NULL;
  447. _to_key=X776to_key(a1);
  448. /*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_to_key)) {
  449. R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_to_key);
  450. }
  451. /*FI*/return R;
  452. }
  453. int r355gt(T0* a1,T0* a2){
  454. int R=0;
  455. T0* _bcn2=NULL;
  456. T0* _bcn1=NULL;
  457. T0* _bf2=NULL;
  458. T0* _bf1=NULL;
  459. T0* _bc2=NULL;
  460. T0* _bc1=NULL;
  461. _bf1=(((T820*)((T820*)a1)))->_base_feature/*32*/;
  462. _bf2=(((T820*)((T820*)a2)))->_base_feature/*32*/;
  463. _bc1=/*X359*/((T0*)(((T398*)((T398*)_bf1)))->_base_class/*4*/);
  464. _bc2=/*X359*/((T0*)(((T398*)((T398*)_bf2)))->_base_class/*4*/);
  465. _bcn1=(((T605*)((T605*)_bc1)))->_base_class_name/*24*/;
  466. _bcn2=(((T605*)((T605*)_bc2)))->_base_class_name/*24*/;
  467. /*IF*/if (((((T451*)((T451*)_bcn1)))->_to_string/*0*/)==((void*)((((T451*)((T451*)_bcn2)))->_to_string/*0*/))) {
  468. R=r627before(((T627*)(X359start_position(_bf1))),X359start_position(_bf2));
  469. }
  470.  else if (r451is_subclass_of(((T451*)_bcn2),_bcn1)) {
  471. R=1;
  472. }
  473.  else if (r451is_subclass_of(((T451*)_bcn1),_bcn2)) {
  474. }
  475.  else if (((((T605*)((T605*)_bc1)))->_parent_list/*40*/)==((void*)(NULL))) {
  476. /*IF*/if (((((T605*)((T605*)_bc2)))->_parent_list/*40*/)==((void*)(NULL))) {
  477. R=r7_px_60(((T7*)((((T451*)((T451*)_bcn1)))->_to_string/*0*/)),(((T451*)((T451*)_bcn2)))->_to_string/*0*/);
  478. }
  479. else {
  480. R=1;
  481. }
  482. /*FI*/}
  483.  else if (((((T605*)((T605*)_bc2)))->_parent_list/*40*/)==((void*)(NULL))) {
  484. }
  485. else {
  486. R=(/*(IRF4.6count*/(((T26*)((T26*)((((T673*)((T673*)((((T605*)((T605*)_bc2)))->_parent_list/*40*/))))->_list/*12*/))))->_upper/*8*//*)*/)<(/*(IRF4.6count*/(((T26*)((T26*)((((T673*)((T673*)((((T605*)((T605*)_bc1)))->_parent_list/*40*/))))->_list/*12*/))))->_upper/*8*//*)*/);
  487. }
  488. /*FI*/return R;
  489. }
  490. /*No:RUN_CLASS.id*/
  491. T0* r355get_or_fatal_error(T355* C,T0* a1){
  492. T0* R=NULL;
  493. R=r355get_feature(C,a1);
  494. /*IF*/if ((R)==((void*)(NULL))) {
  495. r683add_position(X776start_position(a1));
  496. /*[IRF3.6append*/{T0* b1=((T0*)ms6_355);
  497. r7append(((T7*)(oBC683explanation)),b1);
  498. }/*]*/
  499. /*[IRF3.6append*/{T0* b1=X776to_string(a1);
  500. r7append(((T7*)(oBC683explanation)),b1);
  501. }/*]*/
  502. /*[IRF3.6append*/{T0* b1=((T0*)ms7_355);
  503. r7append(((T7*)(oBC683explanation)),b1);
  504. }/*]*/
  505. r683add_type((((T355*)C))->_current_type/*0*/,((T0*)ms67_470));
  506. r683print_as_fatal_error(((T683*)(oBC364eh)));
  507. }
  508. /*FI*/return R;
  509. }
  510. /*No:RUN_CLASS.fz_bad_assertion*/
  511. void r355falling_down(T355* C){
  512. int _i=0;
  513. T0* _rf=NULL;
  514. _i=1;
  515. while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
  516. _rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
  517. X496fall_down(_rf);
  518. _i=(_i)+(1);
  519. }
  520. }
  521. /*No:RUN_CLASS.running*/
  522. T0* r355runnable(T0* a1,T0* a2,T0* a3){
  523. T0* R=NULL;
  524. T0* _a=NULL;
  525. int _i=0;
  526. /*IF*/if (!(r608empty(((T608*)a1)))) {
  527. R=r608twin(((T608*)a1));
  528. _i=(((T608*)((T608*)R)))->_upper/*8*/;
  529. while (!((_i)==(0))) {
  530. r604push(((T604*)(oBC364small_eiffel)),a3);
  531. _a=r348to_runnable(((T348*)(r608item(((T608*)R),_i))),a2);
  532. /*IF*/if ((_a)==((void*)(NULL))) {
  533. r355error(r348start_position(((T348*)(r608item(((T608*)R),_i)))),((T0*)ms57_470));
  534. }
  535. else {
  536. /*[IRF3.6put*/{T608* C1=((T608*)R);
  537. T0* b1=_a;
  538. int b2=_i;
  539. ((((T608*)C1))->_storage/*0*/)[(b2)-((((T608*)C1))->_lower/*12*/)]=(b1);
  540. }/*]*/
  541. }
  542. /*FI*/r604pop(((T604*)(oBC364small_eiffel)));
  543. _i=(_i)-(1);
  544. }
  545. }
  546. /*FI*/return R;
  547. }
  548. void r355set_at_run_time(T355* C){
  549. int _i=0;
  550. T0* _rc=NULL;
  551. T0* _rcd=NULL;
  552. /*IF*/if (!((((T355*)C))->_at_run_time/*8*/)) {
  553. C->_at_run_time=1;
  554. C->_compile_to_c_done=0;
  555. r355add_running(C,(T0*)C);
  556. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  557. /*IF*/if (X291is_reference((((T355*)C))->_current_type/*0*/)) {
  558. _rcd=oBC604run_class_dictionary;
  559. _i=1;
  560. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  561. _rc=r250item(((T250*)_rcd),_i);
  562. /*IF*/if (r355is_a(C,_rc)) {
  563. r355add_running(((T355*)_rc),(T0*)C);
  564. }
  565. /*FI*/_i=(_i)+(1);
  566. }
  567. }
  568. /*FI*/}
  569. /*FI*/}
  570. /*No:RUN_CLASS.writable_attributes_mem*/
  571. int r355is_a(T355* C,T0* a1){
  572. int R=0;
  573. T0* _t2=NULL;
  574. T0* _t1=NULL;
  575. /*IF*/if ((a1)==((void*)(C))) {
  576. R=1;
  577. }
  578. else {
  579. _t1=(((T355*)C))->_current_type/*0*/;
  580. _t2=(((T355*)((T355*)a1)))->_current_type/*0*/;
  581. /*IF*/if ((X291is_basic_eiffel_expanded(_t1))&&(X291is_basic_eiffel_expanded(_t2))) {
  582. }
  583. else {
  584. R=X291is_a(_t1,_t2);
  585. /*IF*/if (!(R)) {
  586. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  587. /*]*/
  588. r38clear(((T38*)(oBC683positions)));
  589. /*]*/
  590. }
  591. /*FI*/}
  592. /*FI*/}
  593. /*FI*/return R;
  594. }
  595. void r355demangling(T355* C){
  596. int _i=0;
  597. T0* _r=NULL;
  598. T0* _str=NULL;
  599. _str=((T0*)ms8_355);
  600. /*[IRF3.3clear*/((((T7*)(((T7*)_str))))->_count)=(0);
  601. /*]*/
  602. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  603. r7extend(((T7*)_str),'A');
  604. /*IF*/if ((X291is_reference((((T355*)C))->_current_type/*0*/))&&(!(r355is_tagged(C)))) {
  605. r7extend(((T7*)_str),'\52');
  606. }
  607. else {
  608. r7extend(((T7*)_str),'\40');
  609. }
  610. /*FI*/}
  611. else {
  612. r7extend(((T7*)_str),'D');
  613. r7extend(((T7*)_str),'\40');
  614. }
  615. /*FI*/_r=(((T355*)C))->_running/*12*/;
  616. /*IF*/if ((_r)!=((void*)(NULL))) {
  617. r2append_in(r396count(((T396*)_r)),_str);
  618. }
  619. /*FI*/while (!(((((T7*)((T7*)_str)))->_count/*4*/)>(4))) {
  620. r7extend(((T7*)_str),'\40');
  621. }
  622. r7extend(((T7*)_str),'T');
  623. r2append_in((((T355*)C))->_id/*4*/,_str);
  624. while (!(((((T7*)((T7*)_str)))->_count/*4*/)>(10))) {
  625. r7extend(((T7*)_str),'\40');
  626. }
  627. X291demangling_in((((T355*)C))->_current_type/*0*/,_str);
  628. /*IF*/if ((_r)!=((void*)(NULL))) {
  629. r7extend(((T7*)_str),'\40');
  630. _i=(((T396*)((T396*)_r)))->_upper/*8*/;
  631. while (!((_i)==(0))) {
  632. r2append_in((((T355*)((T355*)(r396item(((T396*)_r),_i)))))->_id/*4*/,_str);
  633. _i=(_i)-(1);
  634. /*IF*/if ((_i)>(0)) {
  635. r7extend(((T7*)_str),'\54');
  636. }
  637. /*FI*/}
  638. }
  639. /*FI*/r7extend(((T7*)_str),'\n');
  640. /*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),_str);
  641. /*]*/
  642. }
  643. /*No:RUN_CLASS.actuals_clients*/
  644. /*No:RUN_CLASS.at_run_time*/
  645. T0* r355get_rf(T355* C,T0* a1){
  646. T0* R=NULL;
  647. T0* _tfg=NULL;
  648. T0* _constraint=NULL;
  649. T0* _trt=NULL;
  650. T0* _wbc2=NULL;
  651. T0* _wbc=NULL;
  652. T0* _fn2=NULL;
  653. T0* _fn1=NULL;
  654. int _is_current=0;
  655. T0* _target=NULL;
  656. _target=X135target(a1);
  657. _trt=X662result_type(_target);
  658. _is_current=X662is_current(_target);
  659. _fn1=X135feature_name(a1);
  660. _wbc=r627base_class(((T627*)(X776start_position(_fn1))));
  661. /*IF*/if ((_is_current)||(X291is_like_current(_trt))) {
  662. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),_wbc,_fn1);
  663. /*IF*/if ((_fn2)!=((void*)(_fn1))) {
  664. r683add_position(X776start_position(_fn1));
  665. R=r355get_or_fatal_error(C,_fn2);
  666. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  667. /*]*/
  668. r38clear(((T38*)(oBC683positions)));
  669. /*]*/
  670. }
  671. else {
  672. R=r355get_or_fatal_error(C,_fn1);
  673. }
  674. /*FI*/}
  675.  else if (X291is_formal_generic(_trt)) {
  676. _tfg=_trt;
  677. if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
  678. case 283: 
  679. break;
  680. default:
  681. _tfg=NULL;
  682. };_constraint=r283constraint(((T283*)_tfg));
  683. /*IF*/if ((_constraint)==((void*)(NULL))) {
  684. R=r355get_or_fatal_error(C,_fn1);
  685. }
  686.  else if (!(X291is_a(_trt,_constraint))) {
  687. r683print_as_error(((T683*)(oBC364eh)));
  688. r683add_position(X776start_position(X135feature_name(a1)));
  689. /*[IRF3.6append*/{T0* b1=((T0*)ms3_355);
  690. r7append(((T7*)(oBC683explanation)),b1);
  691. }/*]*/
  692. r683print_as_fatal_error(((T683*)(oBC364eh)));
  693. }
  694. else {
  695. _wbc2=r627base_class(((T627*)(X291start_position(_constraint))));
  696. /*IF*/if (((_wbc2)==((void*)(_wbc)))||(r605is_subclass_of(((T605*)_wbc),_wbc2))) {
  697. _fn2=r605new_name_of(((T605*)(X291base_class(_trt))),X291base_class(_constraint),_fn1);
  698. R=r355get_or_fatal_error(C,_fn2);
  699. }
  700. else {
  701. R=r355get_or_fatal_error(C,_fn1);
  702. }
  703. /*FI*/}
  704. /*FI*/}
  705. else {
  706. R=r355get_or_fatal_error(C,_fn1);
  707. }
  708. /*FI*/X496add_client(R,(T0*)C);
  709. /*IF*/if ((((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&(!(_is_current)))&&(!(X496is_exported_in(R,(((T605*)((T605*)_wbc)))->_base_class_name/*24*/)))) {
  710. r683add_position(X496start_position(R));
  711. /*[IRF3.6append*/{T0* b1=((T0*)ms4_355);
  712. r7append(((T7*)(oBC683explanation)),b1);
  713. }/*]*/
  714. /*[IRF3.6append*/{T0* b1=X776to_string(_fn1);
  715. r7append(((T7*)(oBC683explanation)),b1);
  716. }/*]*/
  717. r355error(X776start_position(X135feature_name(a1)),((T0*)ms5_355));
  718. }
  719. /*FI*/return R;
  720. }
  721. T0* r355get_feature(T355* C,T0* a1){
  722. T0* R=NULL;
  723. T0* _bc=NULL;
  724. T0* _fn_key=NULL;
  725. T0* _f=NULL;
  726. _fn_key=X776to_key(a1);
  727. /*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_fn_key)) {
  728. R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_fn_key);
  729. }
  730. else {
  731. _bc=r355base_class(C);
  732. _f=r605look_up_for(((T605*)_bc),(T0*)C,a1);
  733. /*IF*/if ((_f)==((void*)(NULL))) {
  734. r355efnf(C,_bc,a1);
  735. }
  736. else {
  737. R=X359to_run_feature(_f,(((T355*)C))->_current_type/*0*/,a1);
  738. /*IF*/if ((R)!=((void*)(NULL))) {
  739. r355store_feature(C,R);
  740. }
  741. else {
  742. r355efnf(C,_bc,a1);
  743. }
  744. /*FI*/}
  745. /*FI*/}
  746. /*FI*/return R;
  747. }
  748. T0* r355class_with(T0* a1){
  749. T0* R=NULL;
  750. R=r604get_class(a1);
  751. return R;
  752. }
  753. void r355efnf(T355* C,T0* a1,T0* a2){
  754. /*[IRF3.6append*/{T0* b1=((T0*)ms9_355);
  755. r7append(((T7*)(oBC683explanation)),b1);
  756. }/*]*/
  757. /*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)C))->_current_type/*0*/);
  758. r7append(((T7*)(oBC683explanation)),b1);
  759. }/*]*/
  760. /*[IRF3.6append*/{T0* b1=((T0*)ms10_355);
  761. r7append(((T7*)(oBC683explanation)),b1);
  762. }/*]*/
  763. /*[IRF3.6append*/{T0* b1=X776to_string(a2);
  764. r7append(((T7*)(oBC683explanation)),b1);
  765. }/*]*/
  766. /*[IRF3.6append*/{T0* b1=((T0*)ms11_355);
  767. r7append(((T7*)(oBC683explanation)),b1);
  768. }/*]*/
  769. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
  770. r7append(((T7*)(oBC683explanation)),b1);
  771. }/*]*/
  772. r355error(X776start_position(a2),((T0*)ms67_470));
  773. }
  774. void r355make(T355* C,T0* a1){
  775. int _i=0;
  776. T0* _r=NULL;
  777. T0* _rc=NULL;
  778. T0* _rcd=NULL;
  779. T0* _run_string=NULL;
  780. C->_compile_to_c_done=1;
  781. C->_current_type=a1;
  782. {T187*n=malloc(sizeof(*n));
  783. *n=M187;
  784. r187with_capacity(n,16);
  785. C->_actuals_clients=(T0*)n;
  786. }
  787. _run_string=X291run_time_mark(a1);
  788. C->_id=r410item(((T410*)(r355id_provider())),_run_string);
  789. /*IF*/if ((((T604*)((T604*)(oBC364small_eiffel))))->_is_ready/*0*/) {
  790. r355warning(NULL,((T0*)ms1_355));
  791. }
  792. /*FI*//*IF*/if (r250has(((T250*)(oBC604run_class_dictionary)),_run_string)) {
  793. r355warning(NULL,((T0*)ms2_355));
  794. }
  795. /*FI*/r250put(((T250*)(oBC604run_class_dictionary)),(T0*)C,_run_string);
  796. {T199*n=malloc(sizeof(*n));
  797. *n=M199;
  798. r199with_capacity(n,64);
  799. C->_feature_dictionary=(T0*)n;
  800. }
  801. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  802. /*IF*/if (X291is_expanded(a1)) {
  803. r355set_at_run_time(C);
  804. r605check_expanded_with(((T605*)(X291base_class(a1))),a1);
  805. }
  806. else {
  807. _rcd=oBC604run_class_dictionary;
  808. _i=1;
  809. while (!((_i)>((((T250*)((T250*)_rcd)))->_count/*40*/))) {
  810. _rc=r250item(((T250*)_rcd),_i);
  811. /*IF*/if ((((((T355*)((T355*)_rc)))->_at_run_time/*8*/)&&(X291is_reference((((T355*)((T355*)_rc)))->_current_type/*0*/)))&&(r355is_a(((T355*)_rc),(T0*)C))) {
  812. r355add_running(C,_rc);
  813. }
  814. /*FI*/_i=(_i)+(1);
  815. }
  816. }
  817. /*FI*//*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
  818. r608clear(((T608*)(oBC355ci_collector)));
  819. r605collect_invariant(((T605*)(r355base_class(C))),(T0*)C);
  820. _r=r355runnable(oBC355ci_collector,(((T355*)C))->_current_type/*0*/,NULL);
  821. /*IF*/if ((_r)!=((void*)(NULL))) {
  822. {T699*n=malloc(sizeof(*n));
  823. *n=M699;
  824. r699from_runnable(n,_r);
  825. C->_invariant_assertion=(T0*)n;
  826. }
  827. }
  828. /*FI*/}
  829. /*FI*/}
  830. /*No:RUN_CLASS.nb_errors*/
  831. void r355c_object_model_in(T355* C,T0* a1){
  832. T0* _t=NULL;
  833. T0* _rf2=NULL;
  834. int _i=0;
  835. T0* _wa=NULL;
  836. _wa=r355writable_attributes(C);
  837. /*IF*/if ((_wa)==((void*)(NULL))) {
  838. /*IF*/if (r355is_tagged(C)) {
  839. r7extend(((T7*)a1),'\173');
  840. r2append_in((((T355*)C))->_id/*4*/,a1);
  841. r7extend(((T7*)a1),'\175');
  842. }
  843. else {
  844. X291c_initialize_in((((T355*)C))->_current_type/*0*/,a1);
  845. }
  846. /*FI*/}
  847. else {
  848. r7extend(((T7*)a1),'\173');
  849. /*IF*/if (r355is_tagged(C)) {
  850. r2append_in((((T355*)C))->_id/*4*/,a1);
  851. r7extend(((T7*)a1),'\54');
  852. }
  853. /*FI*/_i=(((T280*)((T280*)_wa)))->_upper/*12*/;
  854. while (!((_i)==(0))) {
  855. _rf2=r280item(((T280*)_wa),_i);
  856. _t=(((T820*)((T820*)_rf2)))->_result_type/*24*/;
  857. X291c_initialize_in(_t,a1);
  858. _i=(_i)-(1);
  859. /*IF*/if ((_i)>(0)) {
  860. r7extend(((T7*)a1),'\54');
  861. }
  862. /*FI*/}
  863. r7extend(((T7*)a1),'\175');
  864. }
  865. /*FI*/}
  866. void r355store_feature(T355* C,T0* a1){
  867. T0* _rf_key=NULL;
  868. _rf_key=X776to_key(/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/));
  869. /*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_rf_key)) {
  870. }
  871. else {
  872. r199put(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1,_rf_key);
  873. r604incr_magic_count(((T604*)(oBC364small_eiffel)));
  874. }
  875. /*FI*/}
  876. T0* r355writable_attributes(T355* C){
  877. T0* R=NULL;
  878. int _i=0;
  879. T0* _rf2=NULL;
  880. /*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)==((void*)(NULL))) {
  881. _i=1;
  882. while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
  883. _rf2=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
  884. if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
  885. case 820: 
  886. break;
  887. default:
  888. _rf2=NULL;
  889. };/*IF*/if ((_rf2)!=((void*)(NULL))) {
  890. /*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)==((void*)(NULL))) {
  891. C->_writable_attributes_mem=se_ma280(1,_rf2);
  892. }
  893. else {
  894. r280add_last(((T280*)((((T355*)C))->_writable_attributes_mem/*36*/)),_rf2);
  895. }
  896. /*FI*/}
  897. /*FI*/_i=(_i)+(1);
  898. }
  899. /*IF*/if (((((T355*)C))->_writable_attributes_mem/*36*/)!=((void*)(NULL))) {
  900. r355sort_wam((((T355*)C))->_writable_attributes_mem/*36*/);
  901. }
  902. /*FI*/}
  903. /*FI*/R=(((T355*)C))->_writable_attributes_mem/*36*/;
  904. return R;
  905. }
  906. /*No:RUN_CLASS.compile_to_c_done*/
  907. T0*oBC355ci_collector=NULL;
  908. void r355compile_to_c(T355* C,int a1){
  909. int _cc2=0;
  910. int _cc1=0;
  911. T0* _rc2=NULL;
  912. T0* _rc1=NULL;
  913. int _i=0;
  914. /*IF*/if ((((T355*)C))->_compile_to_c_done/*20*/) {
  915. }
  916.  else if (!((((T355*)C))->_at_run_time/*8*/)) {
  917. C->_compile_to_c_done=1;
  918. }
  919.  else if ((a1)==(0)) {
  920. r355really_compile_to_c(C);
  921. }
  922. else {
  923. _i=(((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_upper/*8*/;
  924. /*IF*/if ((_i)>=(0)) {
  925. _rc1=(T0*)C;
  926. _cc1=(_i)+(1);
  927. while (!((_i)==(0))) {
  928. _rc2=/*(IRF4.6item*/((((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_storage/*0*/)[_i]/*)*/;
  929. /*IF*/if (!((((T355*)((T355*)_rc2)))->_compile_to_c_done/*20*/)) {
  930. _cc2=/*(IRF4.6count*/((((T187*)((T187*)((((T355*)((T355*)_rc2)))->_actuals_clients/*32*/))))->_upper/*8*/)+(1)/*)*/;
  931. /*IF*/if ((_cc2)>(_cc1)) {
  932. _rc1=_rc2;
  933. _cc1=_cc2;
  934. }
  935. /*FI*/}
  936. /*FI*/_i=(_i)-(1);
  937. }
  938. /*IF*/if ((_rc1)==((void*)(C))) {
  939. r355really_compile_to_c(C);
  940. }
  941. else {
  942. r355compile_to_c(((T355*)_rc1),(a1)-(1));
  943. }
  944. /*FI*/}
  945. /*FI*/}
  946. /*FI*/}
  947. void r355gc_initialize(T355* C){
  948. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  949. X291gc_initialize((((T355*)C))->_current_type/*0*/);
  950. }
  951. /*FI*/}
  952. void r355add_running(T355* C,T0* a1){
  953. /*IF*/if (((((T355*)C))->_running/*12*/)==((void*)(NULL))) {
  954. C->_running=se_ma396(1,a1);
  955. }
  956. else {
  957. /*IF*/if (!(r396fast_has(((T396*)((((T355*)C))->_running/*12*/)),a1))) {
  958. r396add_last(((T396*)((((T355*)C))->_running/*12*/)),a1);
  959. }
  960. /*FI*/}
  961. /*FI*/}
  962. void r355add_client(T355* C,T0* a1){
  963. int _i=0;
  964. _i=r187fast_index_of(((T187*)((((T355*)C))->_actuals_clients/*32*/)),a1);
  965. /*IF*/if ((_i)>((((T187*)((T187*)((((T355*)C))->_actuals_clients/*32*/))))->_upper/*8*/)) {
  966. r187add_last(((T187*)((((T355*)C))->_actuals_clients/*32*/)),a1);
  967. }
  968. /*FI*/}
  969. T0* r355get_feature_with(T355* C,T0* a1){
  970. T0* R=NULL;
  971. T0* _sfn=NULL;
  972. /*IF*/if (r199has(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1)) {
  973. R=r199at(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),a1);
  974. }
  975. else {
  976. {T446*n=malloc(sizeof(*n));
  977. *n=M446;
  978. r446make(n,a1,NULL);
  979. _sfn=(T0*)n;
  980. }
  981. R=r355get_feature(C,_sfn);
  982. }
  983. /*FI*/return R;
  984. }
  985. /*No:RUN_CLASS.collect_invariant*/
  986. T0* r355id_provider(void){
  987. if (fBC364id_provider==0){
  988. T0* R=NULL;
  989. fBC364id_provider=1;
  990. {T410*n=malloc(sizeof(*n));
  991. *n=M410;
  992. r410make(n);
  993. R=(T0*)n;
  994. }
  995. oBC364id_provider=R;}
  996. return oBC364id_provider;}
  997. /*No:RUN_CLASS.current_type*/
  998. int r355gc_mark_to_follow(T355* C){
  999. int R=0;
  1000. T0* _rc=NULL;
  1001. T0* _r=NULL;
  1002. int _i=0;
  1003. _r=(((T355*)C))->_running/*12*/;
  1004. _i=(((T396*)((T396*)_r)))->_upper/*8*/;
  1005. while (!((R)||((_i)==(0)))) {
  1006. _rc=r396item(((T396*)_r),_i);
  1007. /*IF*/if ((((T355*)((T355*)_rc)))->_at_run_time/*8*/) {
  1008. R=r355need_gc_mark(((T355*)_rc));
  1009. }
  1010. /*FI*/_i=(_i)-(1);
  1011. }
  1012. return R;
  1013. }
  1014. /*No:RUN_CLASS.tagged_mem*/
  1015. void r355gc_mark_in(T355* C,T0* a1){
  1016. T0* _rf2=NULL;
  1017. T0* _wa=NULL;
  1018. int _i=0;
  1019. _wa=r355writable_attributes(C);
  1020. /*IF*/if ((_wa)!=((void*)(NULL))) {
  1021. _i=(((T280*)((T280*)_wa)))->_upper/*12*/;
  1022. while (!((_i)==(0))) {
  1023. _rf2=r280item(((T280*)_wa),_i);
  1024. /*IF*/if ((((T355*)((T355*)(X291run_class((((T820*)((T820*)_rf2)))->_result_type/*24*/)))))->_at_run_time/*8*/) {
  1025. r548call_gc_mark(a1,_rf2);
  1026. }
  1027. /*FI*/_i=(_i)-(1);
  1028. }
  1029. }
  1030. /*FI*/}
  1031. void r355c_header_pass1(T355* C){
  1032. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1033. X291c_header_pass1((((T355*)C))->_current_type/*0*/);
  1034. }
  1035. /*FI*/}
  1036. T0* r355get_copy(T355* C){
  1037. T0* R=NULL;
  1038. R=r355get_rf_with(C,/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r605get_copy(((T605*)(r355class_general())))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/));
  1039. return R;
  1040. }
  1041. void r355really_compile_to_c(T355* C){
  1042. T0* _rf=NULL;
  1043. int _i=0;
  1044. C->_compile_to_c_done=1;
  1045. r324split_c_start_run_class(((T324*)(oBC364cpp)));
  1046. r306put_character(((T306*)(oBC364echo)),'\11');
  1047. r306put_string(((T306*)(oBC364echo)),X291run_time_mark((((T355*)C))->_current_type/*0*/));
  1048. r306put_character(((T306*)(oBC364echo)),'\n');
  1049. _i=1;
  1050. while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
  1051. _rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
  1052. X496c_define(_rf);
  1053. _i=(_i)+(1);
  1054. }
  1055. /*IF*/if (r590invariant_check(((T590*)(oBC364run_control)))) {
  1056. /*IF*/if (((((T355*)C))->_invariant_assertion/*16*/)!=((void*)(NULL))) {
  1057. r699c_define(((T699*)((((T355*)C))->_invariant_assertion/*16*/)));
  1058. }
  1059. /*FI*/}
  1060. /*FI*/}
  1061. /*No:RUN_CLASS.invariant_assertion*/
  1062. T0* r355dynamic(T355* C,T0* a1){
  1063. T0* R=NULL;
  1064. T0* _up_type=NULL;
  1065. T0* _up_fn=NULL;
  1066. T0* _fn=NULL;
  1067. _up_type=/*X496*/((T0*)(((T832*)((T832*)a1)))->_current_type/*4*/);
  1068. /*IF*/if ((C)==((void*)(X291run_class(_up_type)))) {
  1069. R=a1;
  1070. }
  1071. else {
  1072. _up_fn=/*X496*/((T0*)(((T832*)((T832*)a1)))->_name/*16*/);
  1073. _fn=r605new_name_of(((T605*)(r355base_class(C))),X291base_class(_up_type),_up_fn);
  1074. R=r355get_or_fatal_error(C,_fn);
  1075. }
  1076. /*FI*/return R;
  1077. }
  1078. /*No:RUN_CLASS.fz_dot*/
  1079. int fBC364class_general=0;
  1080. T0*oBC364class_general=NULL;
  1081. T0* r355class_general(void){
  1082. if (fBC364class_general==0){
  1083. T0* R=NULL;
  1084. fBC364class_general=1;
  1085. R=r355class_with(((T0*)ms14_473));
  1086. oBC364class_general=R;}
  1087. return oBC364class_general;}
  1088. int r355offset_of(T355* C,T0* a1){
  1089. int R=0;
  1090. int _i=0;
  1091. T0* _t=NULL;
  1092. T0* _wa=NULL;
  1093. /*IF*/if (r355is_tagged(C)) {
  1094. R=sizeof(T2);
  1095. }
  1096. /*FI*/_wa=r355writable_attributes(C);
  1097. _i=(((T280*)((T280*)_wa)))->_upper/*12*/;
  1098. while (!((r280item(((T280*)_wa),_i))==((void*)(a1)))) {
  1099. _t=(((T820*)((T820*)(r280item(((T280*)_wa),_i)))))->_result_type/*24*/;
  1100. R=(R)+(X291space_for_variable(_t));
  1101. _i=(_i)-(1);
  1102. }
  1103. return R;
  1104. }
  1105. void r355c_header_pass2(T355* C){
  1106. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1107. X291c_header_pass2((((T355*)C))->_current_type/*0*/);
  1108. }
  1109. /*FI*/}
  1110. void r355gc_define1(T355* C){
  1111. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1112. X291gc_define1((((T355*)C))->_current_type/*0*/);
  1113. }
  1114. /*FI*/}
  1115. void r355sort_wam(T0* a1){
  1116. int _moved=0;
  1117. int _buble=0;
  1118. int _max=0;
  1119. int _min=0;
  1120. _max=(((T280*)((T280*)a1)))->_upper/*12*/;
  1121. _min=1;
  1122. _moved=1;
  1123. while (!(!(_moved))) {
  1124. _moved=0;
  1125. /*IF*/if (((_max)-(_min))>(0)) {
  1126. _buble=(_min)+(1);
  1127. while (!((_buble)>(_max))) {
  1128. /*IF*/if (r355gt(r280item(((T280*)a1),(_buble)-(1)),r280item(((T280*)a1),_buble))) {
  1129. r280swap(((T280*)a1),(_buble)-(1),_buble);
  1130. _moved=1;
  1131. }
  1132. /*FI*/_buble=(_buble)+(1);
  1133. }
  1134. _max=(_max)-(1);
  1135. }
  1136. /*FI*//*IF*/if ((_moved)&&(((_max)-(_min))>(0))) {
  1137. _moved=0;
  1138. _buble=(_max)-(1);
  1139. while (!((_buble)<(_min))) {
  1140. /*IF*/if (r355gt(r280item(((T280*)a1),_buble),r280item(((T280*)a1),(_buble)+(1)))) {
  1141. r280swap(((T280*)a1),_buble,(_buble)+(1));
  1142. _moved=1;
  1143. }
  1144. /*FI*/_buble=(_buble)-(1);
  1145. }
  1146. _min=(_min)+(1);
  1147. }
  1148. /*FI*/}
  1149. }
  1150. void r355gc_info_in(T355* C,T0* a1){
  1151. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1152. X291gc_info_in((((T355*)C))->_current_type/*0*/,a1);
  1153. }
  1154. /*FI*/}
  1155. void r355error(T0* a1,T0* a2){
  1156. r683add_position(a1);
  1157. r683error(((T683*)(oBC364eh)),a2);
  1158. }
  1159. T0* r355base_class(T355* C){
  1160. T0* R=NULL;
  1161. R=X291base_class((((T355*)C))->_current_type/*0*/);
  1162. return R;
  1163. }
  1164. void r355call_gc_sweep_in(T355* C,T0* a1){
  1165. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1166. X291call_gc_sweep_in((((T355*)C))->_current_type/*0*/,a1);
  1167. }
  1168. /*FI*/}
  1169. void r355gc_define2(T355* C){
  1170. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1171. X291gc_define2((((T355*)C))->_current_type/*0*/);
  1172. }
  1173. /*FI*/}
  1174. int r355need_gc_mark(T355* C){
  1175. int R=0;
  1176. T0* _t=NULL;
  1177. T0* _rf2=NULL;
  1178. T0* _wa=NULL;
  1179. int _i=0;
  1180. _wa=r355writable_attributes(C);
  1181. /*IF*/if ((_wa)!=((void*)(NULL))) {
  1182. _i=(((T280*)((T280*)_wa)))->_upper/*12*/;
  1183. while (!((R)||((_i)==(0)))) {
  1184. _rf2=r280item(((T280*)_wa),_i);
  1185. _t=(((T820*)((T820*)_rf2)))->_result_type/*24*/;
  1186. R=X291need_gc_mark_function(_t);
  1187. _i=(_i)-(1);
  1188. }
  1189. }
  1190. /*FI*/return R;
  1191. }
  1192. void r355c_header_pass3(T355* C){
  1193. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1194. X291c_header_pass3((((T355*)C))->_current_type/*0*/);
  1195. }
  1196. /*FI*/}
  1197. /*No:RUN_CLASS.feature_dictionary*/
  1198. T0* r355base_class_name(T355* C){
  1199. T0* R=NULL;
  1200. R=X291base_class_name((((T355*)C))->_current_type/*0*/);
  1201. return R;
  1202. }
  1203. T0* r355get_rf_with(T355* C,T0* a1){
  1204. T0* R=NULL;
  1205. T0* _wbc=NULL;
  1206. T0* _fn2=NULL;
  1207. _wbc=r627base_class(((T627*)(X776start_position(a1))));
  1208. _fn2=r605new_name_of(((T605*)(r355base_class(C))),_wbc,a1);
  1209. /*IF*/if ((_fn2)!=((void*)(a1))) {
  1210. r683add_position(X776start_position(a1));
  1211. R=r355get_or_fatal_error(C,_fn2);
  1212. /*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)(((T7*)(oBC683explanation)))))->_count)=(0);
  1213. /*]*/
  1214. r38clear(((T38*)(oBC683positions)));
  1215. /*]*/
  1216. }
  1217. else {
  1218. R=r355get_or_fatal_error(C,_fn2);
  1219. }
  1220. /*FI*/return R;
  1221. }
  1222. void r355afd_check(T355* C){
  1223. int _i=0;
  1224. T0* _rf=NULL;
  1225. _i=1;
  1226. while (!((_i)>((((T199*)((T199*)((((T355*)C))->_feature_dictionary/*24*/))))->_count/*40*/))) {
  1227. _rf=r199item(((T199*)((((T355*)C))->_feature_dictionary/*24*/)),_i);
  1228. X496afd_check(_rf);
  1229. _i=(_i)+(1);
  1230. }
  1231. }
  1232. /*No:RUN_CLASS.us_general*/
  1233. void r355warning(T0* a1,T0* a2){
  1234. r683add_position(a1);
  1235. r683warning(((T683*)(oBC364eh)),a2);
  1236. }
  1237. void r355c_header_pass4(T355* C){
  1238. /*IF*/if ((((T355*)C))->_at_run_time/*8*/) {
  1239. X291c_header_pass4((((T355*)C))->_current_type/*0*/);
  1240. }
  1241. /*FI*/}
  1242. int r355is_tagged(T355* C){
  1243. int R=0;
  1244. /*IF*/if (((((T355*)C))->_tagged_mem/*28*/)==(0)) {
  1245. /*IF*/if (X291is_expanded((((T355*)C))->_current_type/*0*/)) {
  1246. C->_tagged_mem=-(1);
  1247. }
  1248.  else if ((((T355*)C))->_at_run_time/*8*/) {
  1249. /*IF*/if (r590boost(((T590*)(oBC364run_control)))) {
  1250. /*IF*/if (r604is_tagged((T0*)C)) {
  1251. C->_tagged_mem=1;
  1252. }
  1253. else {
  1254. C->_tagged_mem=-(1);
  1255. }
  1256. /*FI*/}
  1257. else {
  1258. C->_tagged_mem=1;
  1259. }
  1260. /*FI*/}
  1261. /*FI*/}
  1262. /*FI*/R=((((T355*)C))->_tagged_mem/*28*/)==(1);
  1263. return R;
  1264. }
  1265. int r636gives_permission_to_any(T636* C){
  1266. int R=0;
  1267. /*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
  1268. R=1;
  1269. }
  1270.  else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
  1271. }
  1272. else {
  1273. R=r33gives_permission_to_any(((T33*)((((T636*)C))->_list/*4*/)));
  1274. }
  1275. /*FI*/return R;
  1276. }
  1277. void r636merge(T636* C,T0* a1,T0* a2,T0* a3){
  1278. C->_start_position=a1;
  1279. {T33*n=malloc(sizeof(*n));
  1280. *n=M33;
  1281. r33merge(n,a2,a3);
  1282. C->_list=(T0*)n;
  1283. }
  1284. }
  1285. void r636make(T636* C,T0* a1,T0* a2){
  1286. C->_start_position=a1;
  1287. /*IF*/if ((a2)!=((void*)(NULL))) {
  1288. {T33*n=malloc(sizeof(*n));
  1289. *n=M33;
  1290. r33make(n,a2);
  1291. C->_list=(T0*)n;
  1292. }
  1293. }
  1294. /*FI*/}
  1295. /*No:CLIENT_LIST.start_position*/
  1296. /*No:CLIENT_LIST.is_omitted*/
  1297. int r636gives_permission_to(T636* C,T0* a1){
  1298. int R=0;
  1299. /*IF*/if (/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/) {
  1300. R=1;
  1301. }
  1302.  else if (((((T636*)C))->_list/*4*/)==((void*)(NULL))) {
  1303. }
  1304. else {
  1305. R=r33gives_permission_to(((T33*)((((T636*)C))->_list/*4*/)),a1);
  1306. }
  1307. /*FI*//*IF*/if (!(R)) {
  1308. r683add_position((((T636*)C))->_start_position/*0*/);
  1309. /*[IRF3.6append*/{T0* b1=(((T451*)((T451*)a1)))->_to_string/*0*/;
  1310. r7append(((T7*)(oBC683explanation)),b1);
  1311. }/*]*/
  1312. /*[IRF3.6append*/{T0* b1=((T0*)ms4_636);
  1313. r7append(((T7*)(oBC683explanation)),b1);
  1314. }/*]*/
  1315. }
  1316. /*FI*/return R;
  1317. }
  1318. /*No:CLIENT_LIST.list*/
  1319. /*No:CLIENT_LIST.omitted*/
  1320. T0* r636append(T636* C,T0* a1){
  1321. T0* R=NULL;
  1322. /*IF*/if ((((C)==((void*)(a1)))||(/*(IRF4.7is_omitted*/((((T636*)C))->_start_position/*0*/)==(NULL)/*)*/))||(r636gives_permission_to_any(C))) {
  1323. R=(T0*)C;
  1324. }
  1325.  else if ((/*(IRF4.7is_omitted*/((((T636*)((T636*)a1)))->_start_position/*0*/)==(NULL)/*)*/)||(r636gives_permission_to_any(((T636*)a1)))) {
  1326. R=a1;
  1327. }
  1328. else {
  1329. {T636*n=malloc(sizeof(*n));
  1330. *n=M636;
  1331. r636merge(n,(((T636*)C))->_start_position/*0*/,(((T636*)C))->_list/*4*/,(((T636*)((T636*)a1)))->_list/*4*/);
  1332. R=(T0*)n;
  1333. }
  1334. }
  1335. /*FI*/return R;
  1336. }
  1337. T0* r358add_comment(T358* C,T0* a1){
  1338. T0* R=NULL;
  1339. /*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
  1340. R=(T0*)C;
  1341. }
  1342. else {
  1343. {T529*n=malloc(sizeof(*n));
  1344. *n=M529;
  1345. r529make(n,(T0*)C,a1);
  1346. R=(T0*)n;
  1347. }
  1348. }
  1349. /*FI*/return R;
  1350. }
  1351. int r358to_integer(T358* C){
  1352. int R=0;
  1353. r358error((((T358*)C))->_start_position/*20*/,((T0*)ms69_470));
  1354. return R;
  1355. }
  1356. int r358is_a(T358* C,T0* a1){
  1357. int R=0;
  1358. R=X291is_a(X291run_type(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/),X291run_type(X662result_type(a1)));
  1359. /*IF*/if (!(R)) {
  1360. r683add_position((((T358*)C))->_start_position/*20*/);
  1361. r358error(X662start_position(a1),((T0*)ms4_662));
  1362. }
  1363. /*FI*/return R;
  1364. }
  1365. /*No:E_CURRENT.is_current*/
  1366. void r358mapping_c_arg(T358* C,T0* a1){
  1367. T0* _rt=NULL;
  1368. _rt=X291run_type(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/);
  1369. /*IF*/if (X291is_reference(_rt)) {
  1370. /*IF*/if (X291is_reference(a1)) {
  1371. /*[IRF3.5put_string*/r544put_string(((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/)),((T0*)ms85_470));
  1372. /*]*/
  1373. r324print_current(((T324*)(oBC364cpp)));
  1374. }
  1375. else {
  1376. X291to_expanded(_rt);
  1377. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
  1378. char b1='\50';
  1379. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1380. }/*]*/
  1381. /*]*/
  1382. r324print_current(((T324*)(oBC364cpp)));
  1383. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
  1384. char b1='\51';
  1385. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1386. }/*]*/
  1387. /*]*/
  1388. }
  1389. /*FI*/}
  1390. else {
  1391. /*IF*/if (X291is_reference(a1)) {
  1392. X291to_reference(_rt);
  1393. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
  1394. char b1='\50';
  1395. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1396. }/*]*/
  1397. /*]*/
  1398. r324print_current(((T324*)(oBC364cpp)));
  1399. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
  1400. char b1='\51';
  1401. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1402. }/*]*/
  1403. /*]*/
  1404. }
  1405. else {
  1406. r324print_current(((T324*)(oBC364cpp)));
  1407. }
  1408. /*FI*/}
  1409. /*FI*/}
  1410. /*No:E_CURRENT.static_value*/
  1411. /*No:E_CURRENT.is_written*/
  1412. void r358make(T358* C,T0* a1,int a2){
  1413. C->_start_position=a1;
  1414. C->_is_written=a2;
  1415. C->_to_string=((T0*)ms143_473);
  1416. }
  1417. void r358mapping_c_target(T358* C,T0* a1){
  1418. int _flag=0;
  1419. /*IF*/if ((((T358*)C))->_is_written/*16*/) {
  1420. _flag=r324call_invariant_start(a1);
  1421. }
  1422. /*FI*/r324print_current(((T324*)(oBC364cpp)));
  1423. /*IF*/if (_flag) {
  1424. /*[IRF3.2call_invariant_end*//*[IRF3.6put_character*/{T544* C1=((T544*)(oBC324out_c));
  1425. char b1='\51';
  1426. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1427. }/*]*/
  1428. /*]*/
  1429. }
  1430. /*FI*/}
  1431. /*No:E_CURRENT.us_current*/
  1432. /*No:E_CURRENT.to_string*/
  1433. /*No:E_CURRENT.fz_iinaiv*/
  1434. /*No:E_CURRENT.dca_inline_argument*/
  1435. /*No:E_CURRENT.start_position*/
  1436. void r358compile_to_c(T358* C){
  1437. /*IF*/if (X291is_user_expanded(/*(IRF4.3result_type*/(((T358*)C))->_current_type/*8*//*)*/)) {
  1438. /*[IRF3.5put_character*//*[IRF3.6put_character*/{T544* C1=((T544*)((((T324*)((T324*)(oBC364cpp))))->_current_out/*56*/));
  1439. char b1='\52';
  1440. putc(b1,((FILE*)((((T544*)C1))->_output_stream/*4*/)));
  1441. }/*]*/
  1442. /*]*/
  1443. }
  1444. /*FI*/r324print_current(((T324*)(oBC364cpp)));
  1445. }
  1446. /*No:E_CURRENT.c_simple*/
  1447. T0* r358to_runnable(T358* C,T0* a1){
  1448. T0* R=NULL;
  1449. /*IF*/if (((((T358*)C))->_current_type/*8*/)==((void*)(NULL))) {
  1450. C->_current_type=a1;
  1451. R=(T0*)C;
  1452. }
  1453.  else if (((((T358*)C))->_current_type/*8*/)==((void*)(a1))) {
  1454. R=(T0*)C;
  1455. }
  1456. else {
  1457. {T358*n=malloc(sizeof(*n));
  1458. *n=M358;
  1459. r358make(n,(((T358*)C))->_start_position/*20*/,(((T358*)C))->_is_written/*16*/);
  1460. R=(T0*)n;
  1461. }
  1462. /*X358*//*[IRF3.3set_current_type*/((((T358*)(((T358*)R))))->_current_type)=(a1);
  1463. /*]*/
  1464. }
  1465. /*FI*/return R;
  1466. }
  1467. /*No:E_CURRENT.result_type*/
  1468. /*No:E_CURRENT.is_result*/
  1469. /*No:E_CURRENT.set_current_type*/
  1470. /*No:E_CURRENT.is_static*/
  1471. /*No:E_CURRENT.can_be_dropped*/
  1472. /*No:E_CURRENT.current_type*/
  1473. /*No:E_CURRENT.compile_to_c_old*/
  1474. /*No:E_CURRENT.static_value_mem*/
  1475. /*No:E_CURRENT.is_manifest_string*/
  1476. /*No:E_CURRENT.is_void*/
  1477. /*No:E_CURRENT.is_pre_computable*/
  1478. /*No:E_CURRENT.fz_cast_t0_star*/
  1479. /*No:E_CURRENT.use_current*/
  1480. void r358error(T0* a1,T0* a2){
  1481. r683add_position(a1);
  1482. r683error(((T683*)(oBC364eh)),a2);
  1483. }
  1484. /*No:E_CURRENT.isa_dca_inline_argument*/
  1485. /*No:E_CURRENT.afd_check*/
  1486. /*No:COMPOUND.empty_or_null_body*/
  1487. void r592make(T592* C,T0* a1,T0* a2){
  1488. C->_header_comment=a1;
  1489. C->_list=a2;
  1490. }
  1491. /*No:COMPOUND.nb_errors*/
  1492.  
  1493.